<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ page import="com.atnjupt.bean.Student" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: WIzarder
  Date: 2021/5/31
  Time: 20:16
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <style type="text/css">
        table{
            width: 400px;
            border: red 1px solid;
            border-collapse: collapse;
        }
        tr,td,th{
            border-collapse: collapse;
            border: red 1px solid;
        }
    </style>
</head>
<body>
<%--1.遍历1到10，输出
   begin属性设置开始的索引
   end 属性设置结束的索引
   var 属性表示循环的变量(也是当前正在遍历到的数据)--%>

    <c:forEach begin="1" end="10" var="i">
        ${i}<br>
    </c:forEach>
    <hr>
<%-- 2.遍历Object数组
  for (Object item: arr)
  items 表示遍历的数据源（遍历的集合）
  var 表示当前遍历到的数据--%>
    <%
        Object[] obj = new Object[]{1,2,3,4,5};
        pageContext.setAttribute("arr",obj);
    %>
    <c:forEach items="${pageScope.arr}" var="items">
        ${items}<br>
    </c:forEach>
        <%
            Map<String,Object> map = new HashMap<>();
            map.put("key1","value1");
            map.put("key2","value2");
            map.put("key3","value3");
            pageContext.setAttribute("map",map);
        %>
    <c:forEach items="${pageScope.map}" var="Entry">
        ${Entry.key}==>${Entry.value}<br>
<%--        ${Entry}<br>
            效果如下：
            ${Entry.key}=${Entry.value}
--%>
    </c:forEach>
<%--4.遍历List集合---list中存放 Student类，有属性：编号，用户名，年龄，电话信息--%>

    <%
        List<Student> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            list.add(new Student(i+1,"student"+i,18+i,"1595545414"+i));
        }
        pageContext.setAttribute("stus",list);
    %>
<%--
           items 表示遍历的集合
           var 表示遍历到的数据
           begin表示遍历的开始索引值
           end 表示结束的索引值
           step 属性表示遍历的步长值
           varStatus 属性表示当前遍历到的数据的状态
           for（int i = 1; i < 10; i+=2）
           varStatus实现了这个接口
     public interface LoopTagStatus {
    public Object getCurrent();//获取当前对象


    public int getIndex();//获取索引从0开始


    public int getCount();//获取个数


    public boolean isFirst();//是否是第一个

    public boolean isLast();//是否是最后一个


    public Integer getBegin();//开始的索引值


    public Integer getEnd();//结束的索引值


    public Integer getStep();//获取步长值

}

       --%>
    <table>
        <tr>
            <th>编号</th>
            <th>用户名</th>
            <th>年龄</th>
            <th>电话信息</th>
            <th>操作</th>
        </tr>
        <c:forEach begin="3" end="7" items="${pageScope.stus}" var="s" step="2" varStatus="status">
            <tr>
                <td>${s.id}</td>
                <td>${s.name}</td>
                <td>${s.age}</td>
                <td>${s.phone}</td>
                <td>${status.current}</td>
            </tr>
        </c:forEach>
    </table>


</body>
</html>
